Programaticaly create entry with simpleMaps field
I actually just had to do this for a project, so I hope this will shed some light on how to set the props:

I started by looking at SimpleMap_MapModel.php and its attributes.

The available properties are: ownerId, fieldId, ownerLocale, lat, lng, zoom, address, and parts. (Don't touch ownerId, fieldId, and ownerLocale—they'll get set automatically when saved!)

So, this means you can set any of the above by simply assigning an associative array to your EntryModel, before saving:

$entry-&gt;setContent([
  'simplemap_field' =&gt; [
    'lat' =&gt; $lat,
    'lng' =&gt; $long
  ]
]);


If you have the data already, and want to populate the address "parts", you can json_encode those into the parts attribute:

$entry-&gt;setContent([
  'simplemap_field' =&gt; [
    'lat' =&gt; $lat,
    'lng' =&gt; $long,
    'parts' =&gt; json_encode([
      'street1' =&gt; $address,
      'locality' =&gt; $city,
      'administrative_area_level_1' =&gt; $state,
      'country' =&gt; $country
    ])
  ]
]);


Not a huge fan of the way those "parts" are saved, but it's basically the serialized/cached response from Google.

The address attribute, as far as I could tell, is basically the value that ends up in the search bar, when you're using the field in the front-end. During our import, we were able to build a meaningful string here, from other data (i.e. a venue name and city), so if any records didn't have a complete set of information, admin didn't have to reconstruct the search, manually.

Unfortunately, SimpleMap will not geocode (or reverse-geocode) your information to fill in gaps… you'll need to manually save each entry. This was something we struggled with when building out import scripts, but fortunately only the more recent location-sensitive content really needed to be updated.