Integrating Google or Bing map with Dynamics 365 for finance and operations - maps

App: Microsoft Dynamics 365 for Finance and Operations
Product version: 10.0.18
Platform version: Update42
Requirement to update address of the record as per pointer in Google or Bing maps.
The MAP button in Addresses grid of "All customers" reads the address and open corresponding Bing map in new tab.
Q1: is there a way to show map in the form itself, maybe using X++ code?
Q2: The pointer or address in not movable, so how to do that and read and update the existing address?
Kindly help with understanding the same.

A1:
Below is the post in Microsoft Forum that answers first question with the usage of HTML and JS resources in X++ form with observe method usage in order to get dynamics values
https://community.dynamics.com/365/financeandoperations/f/dynamics-365-for-finance-and-operations-forum/437773/google-maps-in-microsoft-dynamics-365-finance-and-operation-s-form/1203259

Related

How to use google maps api in angularjs to get list of cities between two markers (cities)

I'm trying to show list of via point major cities when user enters/selects starting and end locations. I'm using angularjs and google maps api. Please let me know if this is possible or not?
What you're asking is most definitely possible, but not trivial. In addition to the google maps API, you will likely need to use another tool provided by google: their Places API.
This API would allow you to input a location and receive information about nearby landmarks, establishments, etc. The places API could be called from an Angular 1 service and then filtered or further manipulated to retrieve only results that are considered "major" to your users.
Depending on how accurate/specific you need your data to be, you should also consider using the American Census data API. You can compare the results from your google places API results and use real, accurate government data to check the population of regions or cities.
So to answer your question: Yes, it is most definitely possible although it certainly doesn't require Angular.

Geographical location in google maps

I'm working on project that deals with advertisements and google maps. I save every advertisement latitude and longitude in my database, but I want to add an option that show user on the map and show all available advertisement around it with radius of 1 km, but I don't know how, Can anyone help me?
Seems to be an interesting project. These are the steps I suggest you :
Store you latitude/longitude as a geography data type using SQL Server. See geography (Transact-SQL).
From your webpage, retrieve the user location. See Use Geolocation API with Angular.js.
Send back the position to your web api (create a new action into your controller).
Write a stored procedure that take the user position as parameter and return the advertisement around it with radius of 1 km. See SQL Geometry find all points in a radius (Geography and Geometry have quiet the same functionalities).
Send the Advertisement location to the client side and use Google Map to show it (I am sure you're going to find some good tuto about that).
Good luck !

Storing Bing maps data in SQL Server, creating a route from saved location

I want to store locations in the form of longitude & latitude in SQL Server. I'd then want to retrieve and display it on Bing Maps. The goal would be to show route to them from the user's current location.
I think there is a location service which is different from Bing Maps, and maybe it would be provide me with what I need.
How can all of this be done?
Here is a pretty good article that shows how you can visualize routes in a Windows Phone application. As of SQL CE storage, you might want to start here.
You can have a look on WP7 Code Samples:
http://msdn.microsoft.com/en-us/library/ff431744(v=vs.92).aspx
Local Database Sample
Location Service Sample
Also try this: http://channel9.msdn.com/Series/Windows-Phone-7-Development-for-Absolute-Beginners/GPS-Location-API-and-Calling-Web-Services

Geocoding out of Salesforce.com (large number of static adresses)

We have developed an application in Salesforce.com to geocode and display account information (address information) on Google Maps within Salesforce.com. We have around 750k addresses for the initial (one-time) geocoding process (static address data), as we store the lat/lon with the account.
Is their any way to get this geocoded done in one 'batch' as we seem to hit the daily allowance of request per day (3k)?
Thanks for your support and feedback.
If you'd like to use Google to do this and you need to precompute the lat/lon coordinates, you'll need to upgrade to the Google Maps API for Business. The table on that link provides a detailed overview of the limit differences, and I suspect that the terms of use may also be more in line with what you're developing too.
If your goal is to create a Google Map from the addresses, you may also consider just passing the address data instead of the latitude and longitude. Their static maps will work fine as long as you know which locations that you'd like to use on the map, you don't have too many locations in one map and you don't need interactivity. Otherwise, you should use the javascript API and their documentation is very good for that.
If you don't know which locations you'd like to use on the map, you could use the lat/lon coordinates of their zip codes (which are freely available) to create a view port.
If you'd like a static map of the locations (whether or not you precompute the lat/lon), I'd recommend taking a look at the apexgooglestaticmap Github repository. It makes it quite easy to make certain types of static Google maps in APEX and VisualForce. Here's an example from that README:
APEX Controller
String[] homes = new String[]{'Albany, NY','Wellesley, MA','New York, NY','Pittsburgh, PA','01945','Ann Arbor, MI','Chicago, IL'};
GoogleStaticMap.MapPath moves = new GoogleStaticMap.MapPath(homes).color('0x000000ff');
String movesUrl = new GoogleStaticMap().addPath(moves).url;
Visualforce Page
<apex:image value="{!movesUrl}">
Google Maps URL and Image
https://maps.google.com/maps/api/staticmap?sensor=false&size=500x350&markers=label:0%7CAlbany%2C+NY&markers=label:1%7CWellesley%2C+MA&markers=label:2%7CNew+York%2C+NY&markers=label:3%7CPittsburgh%2C+PA&markers=label:4%7C01945&markers=label:5%7CAnn+Arbor%2C+MI&markers=label:6%7CChicago%2C+IL&markers=label:0%7CAlbany%2C+NY&markers=label:1%7CWellesley%2C+MA&markers=label:2%7CNew+York%2C+NY&markers=label:3%7CPittsburgh%2C+PA&markers=label:4%7C01945&markers=label:5%7CAnn+Arbor%2C+MI&markers=label:6%7CChicago%2C+IL&path=weight:5%7Ccolor:0x000000ff%7CAlbany%2C+NY%7CWellesley%2C+MA%7CNew+York%2C+NY%7CPittsburgh%2C+PA%7C01945%7CAnn+Arbor%2C+MI%7CChicago%2C+IL&
There are also many other geocoding APIs available. They each have their own terms of service, so make sure that your application matches the acceptable uses before you build anything with them. I've personally used PCMiler Web Services with success, and Geonames for reverse geocoding (they have a number of other great features too).
Google only allows that max per IP Address. If you were able to maximize the locations you were doing them from, max out at work, home or maybe your local starbucks, you could be able to hit the goal easily. If you have more than 250 employees just assign the 'homework' of going home and geocoding it! Spread the wealth, and the fun, of geocoding!
The other solution is using Google Maps API For Business, which allows you to do a max of 100,000 requests per day. For more information look at: http://code.google.com/apis/maps/documentation/geocoding/ ; for more information specifically on Geoogle Maps API For Business: http://code.google.com/apis/maps/documentation/business/index.html
I use this geocoder, and add my list and use yahoo to get the lat and long.
We have FindNearby installed, so once I get all the addresses geo-coded, I add them back into my excel worksheet in the respective column that has the Record ID. Since we use FindNearby, I have to add a column that is titled Mapping Status, and all cells under this say Located. I used ApexData loader to mass upload into SF. Note, geocoder has a limit of only 1000 records at a single "code" click, but it has no limit of how many lists you can process per day.
I changes some code to use Bing map services instead of google. There limits are based on keys and are much larger. Also when the key hits its max requests, then you can just get a new free key and apply it.

Code that can access all major online calendars?

I'm working on a service that needs to be able to read items from users' calendars. It needs to work whether the user is using Google Calendar, Exchange, Hotmail/Live, iCal, etc...
I want to do this (effectively):
calendar = Login(emailaddress, password); // Works for #hotmail.com, #gmail.com...
// For every item in the users' calendar extract the location of the meeting
for each (item in calendar)
location = item.Location;
I figure someone must have built some code that abstracts away the varied ways you login to these services and access the objects. But I haven't found anything yet. Any pointers would be appreciated. I don't really care what it's written in (Ruby, Python, C#, Java) as long as I can wrap it.
UPDATE: I've been able to get something working against the Google Calendar using the Google Calendar API. In the process I came across CalDAV and the fact that Google, Yahoo, and Apple support it. I'm going to focus on CalDAV for now, and then probably plumb in Hotmail/Live and Exchange later. I really only need the calendar event times and location so this should not be too challenging.
UPDATE 2: I have discovered DDay.iCal. I'd like to use this as my top level abstraction within my app. But I still have not found anything that will help me connect to, and interact with each of the popular mail systems. Nor have I found any code that shows how to layer DDay.ICal over CalDAV (which, theoretically, would give me Google, Yahoo, and Apple). Anyone?
There is a calendar REST API for Hotmail which is available in beta form as part of the developer preview of the Live SDK. This is also a beta interactive SDK for the REST API which you can try out at http://beta.isdk.dev.live.com. Just try out the query "/me/calendars"

Resources